package cn.yunyichina.provider.clinic.entity;

import cn.yunyichina.provider.framework.annotation.validate.AnnotationValidable;
import cn.yunyichina.provider.framework.annotation.validate.ValidateConditionNotNullAndNotEmpty;
import cn.yunyichina.provider.framework.annotation.validate.ValidateDigit;
import cn.yunyichina.provider.framework.annotation.validate.ValidateNotNullAndNotEmpty;
import cn.yunyichina.provider.framework.annotation.validate.ValidatePattern;
import cn.yunyichina.provider.framework.annotation.validate.ValidateSize;
import cn.yunyichina.provider.framework.annotation.validate.ValidateStringIn;

public class ClinicTradePay implements AnnotationValidable {
    /**
     * 医院AppId
     */
    @ValidateNotNullAndNotEmpty
    @ValidateSize(minSize = "0", maxSize = "50")
    private String appId;
    
    /**
     * 订单类型
     */
    @ValidateStringIn(value = "1,2,3,4")
    private Integer orderType;

    /**
     * 姓名
     */
    @ValidateNotNullAndNotEmpty
    @ValidateSize(minSize = "0", maxSize = "10")
    private String patientName;

    /**
     * 手机
     */
    @ValidateNotNullAndNotEmpty
    @ValidateSize(minSize = "0", maxSize = "32")
    private String patientMobile;

    /**
     * 授权码
     */
    @ValidateNotNullAndNotEmpty
    @ValidateSize(minSize = "0", maxSize = "32")
    private String authCode;

    /**
     * 绑定诊疗卡类型
     */
    @ValidateNotNullAndNotEmpty
    @ValidateStringIn(value = "1")
    private Integer cardType;

    /**
     * 绑定诊疗卡号
     */
    @ValidateNotNullAndNotEmpty
    @ValidateSize(minSize = "0", maxSize = "32")
    private String cardNo;

    /**
     * 部门编码
     */
    @ValidateNotNullAndNotEmpty
    @ValidateSize(minSize = "0", maxSize = "100")
    private String deptCode;
    /**
     * 部门名称
     */
    @ValidateNotNullAndNotEmpty
    @ValidateSize(minSize = "0", maxSize = "32")
    private String deptName;
    /**
     * 医生/专科代码
     */
    @ValidateNotNullAndNotEmpty
    @ValidateSize(minSize = "0", maxSize = "32")
    private String doctorCode;
    /**
     * 医生/专科名称
     */
    @ValidateNotNullAndNotEmpty
    @ValidateSize(minSize = "0", maxSize = "30")
    private String doctorName;
    /**
     * 缴费项唯一标识
     */
    @ValidateNotNullAndNotEmpty
    @ValidateSize(minSize = "0", maxSize = "20")
    private String mzFeeId;
    /**
     * 处方类型
     */
    private Integer recipeType;
    /**
     * 处方ID号
     */
    @ValidateSize(minSize = "0", maxSize = "50")
    private String recipeId;
    /**
     * 医院业务单据号
     */
    @ValidateNotNullAndNotEmpty
    @ValidateSize(minSize = "0", maxSize = "20")
    private String sSBillNumber;
    /**
     * 生成时间，格式：YYYY-MM-DD HH:mm:ss
     */
    @ValidateNotNullAndNotEmpty
    @ValidatePattern(pattern = "[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}")
    private String time;
    /**
     * 结算方式类型，自费、医保、公费、农村合作医疗等，必须返回中文名称
     */
    @ValidateNotNullAndNotEmpty
    @ValidateSize(minSize = "0", maxSize = "20")
    private String payType;
    /**
     * 是否允许医保结算，0：不允许 1：允许
     * 
     */
    @ValidateNotNullAndNotEmpty
    @ValidateStringIn(value = "0,1")
    private Integer canUseInsurance;
    /**
     * 医保结算业务流水号 用来唯一标识一笔缴费
     * 
     */
    @ValidateSize(minSize = "0", maxSize = "20")
    private String sSFeeNo;
    /**
     * 医保结算业务单据号 必须返回
     * 
     */
    @ValidateSize(minSize = "0", maxSize = "20")
    private String sSBillNo;
    /**
     * 退款流水号，如果是医保支付，必须返回 用于医保订单失败退款入参
     * 
     */
    @ValidateConditionNotNullAndNotEmpty(value="canUseInsurance=1")
    @ValidateSize(minSize = "0", maxSize = "20")
    private String cancelSerialNo;
    /**
     * 退款单据号，如果是医保支付，必须返回 用于医保订单失败退款入参
     * 
     */
    @ValidateConditionNotNullAndNotEmpty(value="canUseInsurance=1")
    @ValidateSize(minSize = "0", maxSize = "20")
    private String cancelBillNo;
    /**
     * 自费金额 = 总金额 – 记账合计 若不支持医保结算，则返回总金额
     * 
     */
    @ValidateNotNullAndNotEmpty
    @ValidateSize(minSize = "0", maxSize = "9")
    @ValidateDigit
    private String payAmout;
    /**
     * 个人账户结算金额，当订单为医保挂号订单时必输 单位：分
     * 
     */
    @ValidateSize(minSize = "0", maxSize = "9")
    @ValidateDigit
    private String accountAmout;
    /**
     * 统筹基金结算金额，当订单为医保挂号订单时必输 单位：分
     * 
     */
    @ValidateSize(minSize = "0", maxSize = "9")
    @ValidateDigit
    private String medicareAmout;
    /**
     * 记账合计，当订单为医保挂号订单时必输 单位：分 记账合计 = 个人账户结算金额 + 统筹基金结算金额
     * 
     */
    @ValidateSize(minSize = "0", maxSize = "9")
    @ValidateDigit
    private String insuranceAmout;
    /**
     * 总金额，总金额 = 自费金额 + 记账合计
     */
    @ValidateNotNullAndNotEmpty
    @ValidateSize(minSize = "0", maxSize = "9")
    @ValidateDigit
    private String totalAmout;

    private String appCode;

    private String userId;
    
    @ValidateSize(minSize = "0", maxSize = "32")
    private String idNo;
    
    @ValidateSize(minSize = "0", maxSize = "200")
    private String address;

    public String getAppCode() {
        return appCode;
    }

    public void setAppCode(String appCode) {
        this.appCode = appCode;
    }

    public Integer getOrderType() {
        return orderType;
    }

    public void setOrderType(Integer orderType) {
        this.orderType = orderType;
    }

    public String getAuthCode() {
        return authCode;
    }

    public void setAuthCode(String authCode) {
        this.authCode = authCode;
    }

    public String getDeptCode() {
        return deptCode;
    }

    public void setDeptCode(String deptCode) {
        this.deptCode = deptCode;
    }

    public String getDeptName() {
        return deptName;
    }

    public void setDeptName(String deptName) {
        this.deptName = deptName;
    }

    public String getDoctorCode() {
        return doctorCode;
    }

    public void setDoctorCode(String doctorCode) {
        this.doctorCode = doctorCode;
    }

    public String getDoctorName() {
        return doctorName;
    }

    public void setDoctorName(String doctorName) {
        this.doctorName = doctorName;
    }

    public String getMzFeeId() {
        return mzFeeId;
    }

    public void setMzFeeId(String mzFeeId) {
        this.mzFeeId = mzFeeId;
    }

    public Integer getRecipeType() {
        return recipeType;
    }

    public void setRecipeType(Integer recipeType) {
        this.recipeType = recipeType;
    }

    public String getRecipeId() {
        return recipeId;
    }

    public void setRecipeId(String recipeId) {
        this.recipeId = recipeId;
    }

    public String getSSBillNumber() {
        return sSBillNumber;
    }

    public void setSSBillNumber(String sSBillNumber) {
        this.sSBillNumber = sSBillNumber;
    }

    public String getTime() {
        return time;
    }

    public void setTime(String time) {
        this.time = time;
    }

    public String getPayType() {
        return payType;
    }

    public void setPayType(String payType) {
        this.payType = payType;
    }

    public Integer getCanUseInsurance() {
        return canUseInsurance;
    }

    public void setCanUseInsurance(Integer canUseInsurance) {
        this.canUseInsurance = canUseInsurance;
    }

    public String getSSFeeNo() {
        return sSFeeNo;
    }

    public void setSSFeeNo(String sSFeeNo) {
        this.sSFeeNo = sSFeeNo;
    }

    public String getSSBillNo() {
        return sSBillNo;
    }

    public void setSSBillNo(String sSBillNo) {
        this.sSBillNo = sSBillNo;
    }

    public String getCancelSerialNo() {
        return cancelSerialNo;
    }

    public void setCancelSerialNo(String cancelSerialNo) {
        this.cancelSerialNo = cancelSerialNo;
    }

    public String getCancelBillNo() {
        return cancelBillNo;
    }

    public void setCancelBillNo(String cancelBillNo) {
        this.cancelBillNo = cancelBillNo;
    }

    public String getPayAmout() {
        return payAmout;
    }

    public void setPayAmout(String payAmout) {
        this.payAmout = payAmout;
    }

    public String getAccountAmout() {
        return accountAmout;
    }

    public void setAccountAmout(String accountAmout) {
        this.accountAmout = accountAmout;
    }

    public String getMedicareAmout() {
        return medicareAmout;
    }

    public void setMedicareAmout(String medicareAmout) {
        this.medicareAmout = medicareAmout;
    }

    public String getInsuranceAmout() {
        return insuranceAmout;
    }

    public void setInsuranceAmout(String insuranceAmout) {
        this.insuranceAmout = insuranceAmout;
    }

    public String getTotalAmout() {
        return totalAmout;
    }

    public void setTotalAmout(String totalAmout) {
        this.totalAmout = totalAmout;
    }

    public String getAppId() {
        return appId;
    }

    public void setAppId(String appId) {
        this.appId = appId;
    }

    public String getPatientName() {
        return patientName;
    }

    public void setPatientName(String patientName) {
        this.patientName = patientName;
    }

    public String getPatientMobile() {
        return patientMobile;
    }

    public void setPatientMobile(String patientMobile) {
        this.patientMobile = patientMobile;
    }

    public Integer getCardType() {
        return cardType;
    }

    public void setCardType(Integer cardType) {
        this.cardType = cardType;
    }

    public String getCardNo() {
        return cardNo;
    }

    public void setCardNo(String cardNo) {
        this.cardNo = cardNo;
    }

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public String getIdNo() {
        return idNo;
    }

    public void setIdNo(String idNo) {
        this.idNo = idNo;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}
